/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.uoc.tdp.test;


import edu.uoc.tdp.beans.proves.EstatProva;
import edu.uoc.tdp.beans.proves.Prova;
import edu.uoc.tdp.common.EOlympicsException;
import edu.uoc.tdp.common.TDSLanguageUtils;
import edu.uoc.tdp.bbdd.GestorDiscConnexio;
import edu.uoc.tdp.beans.proves.PreguntaResposta;
import edu.uoc.tdp.beans.proves.RondaEliminatoria;
import edu.uoc.tdp.beans.proves.RondaFinal;
import edu.uoc.tdp.common.EOlympicsUtils;
import edu.uoc.tdp.servidor.bbdd.proves.*;
import java.sql.Connection;
import java.text.ParseException;
import java.util.Date;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

import java.util.List;

/**
 *
 * @author xmarti
 */

//TODO XMARTI 
// una altra proposta: MILLOR FER SERVIR java.util.date i simpledateFormat i llavors al gestor passar-la a sql.date

// em parlem 
// s'accepten suggerencies, ;)
public class testProva {
    private static GestorDiscConnexio gestor;
    
    private static GestorProva gProva;
    private static GestorRonda gRonda;
    private static Connection connexio;
      public static void main(String args[]) throws SQLException, EOlympicsException {
        TDSLanguageUtils.setDefaultLanguage("edu/uoc/tdp/i18n/messages"); 
        Date dIni= null;
        Date dFi=null;
        EOlympicsUtils utils = new EOlympicsUtils();

        List<PreguntaResposta>preguntes=new ArrayList<PreguntaResposta>();
        preguntes.add(new PreguntaResposta(1,"A"));
        preguntes.add(new PreguntaResposta(2,"B"));
        preguntes.add(new PreguntaResposta(3,"B"));
        preguntes.add(new PreguntaResposta(4,"C"));
        
        List<Prova> proves= new ArrayList<Prova>();
        //dIni=Date.valueOf("01-01-2012");
        
        gestor= new GestorDiscConnexio();
        gestor.obreConnexioBD();
        connexio=gestor.getConnexio();
        gProva= new GestorProva(gestor);
        gRonda=new GestorRonda(gestor);
        try{
            connexio.setAutoCommit(false);
            RondaEliminatoria rEliminatoria;
            RondaFinal rFinal;
            dIni= EOlympicsUtils.getDate("1-5-2012");
            dFi= EOlympicsUtils.getDate("2-5-2012");
            Prova prova = new Prova(50,"prova modificada",dIni,dFi,20);
          
            
            
             prova = new Prova(1,"Commiti final Prova",dIni,dFi,20,EstatProva.INICIAL);
            rEliminatoria=new RondaEliminatoria(4,dIni,dFi,preguntes);
            rFinal=new RondaFinal(4,dIni,dFi,preguntes);
            
            prova.setRondaEliminatoria((RondaEliminatoria)rEliminatoria);
            
             int idProva=gProva.guardarProva(prova);
            
            gRonda.setAltaRondaEliminatoria(idProva, rEliminatoria);
            gRonda.setAltaRondaFinal(idProva, rFinal);
            
            //public Ronda(Integer pNombrePreguntes,Date pDataIniRealitzacio, Date pDataFiRealitzacio,
            //     List<PreguntaResposta>pRespostesCorrectes)
            
            
            //System.out.println("Prova Creada:"+gProva.setAltaProva(prova));
            prova=gProva.getProva(idProva);
            if (prova!=null)
            System.out.println("ok:& "+ prova.getDataIniInscripcio());
            prova.setEstat(EstatProva.TANCADA);            
           gProva.guardarProva(prova);
           proves=gProva.getProvesEdicio();
            for(Prova pre:proves){
                //estic aqui falta comprovar que es carreguem bé les rondes i les preguntes correctes. 
                //estic per fer-ho tot a prova 
                
                rEliminatoria=gRonda.getRondaEliminatoria(pre.getIdProva());
                rFinal=gRonda.getRondaFinal(pre.getIdProva());
                pre.setRondaEliminatoria(rEliminatoria);
                pre.setRondaFinal(rFinal);
                System.out.println("Prova:  "+ pre.getIdProva()+ " " + pre.getDescripcio());
                System.out.println("RondaFInal:  "+ EOlympicsUtils.getStringDate(pre.getRondaFinal().getDataIniRealitzacio()));
            }
            connexio.commit();
            
        
        }catch (SQLException sqle){
            connexio.rollback();
        }
        catch (Exception e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
            
        }
        
        
        gestor.tancaConnexioBD();
    }

  


}
